package com.enjoyor.soa.traffic.api.ubms.service.dubbo;

import com.enjoyor.soa.traffic.api.ubms.dto.VideoSiteInfoDto;
import com.enjoyor.soa.traffic.util.pojo.Page;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

/**
 * 维护视频监控点位信息的Dubbo服务
 * @author yuankun
 * @version V1.0
 */
@SuppressWarnings("rawtypes")
public interface DubboVideoSiteInfoService {
	
	/**
	 * 返回所有视频监控点位信息
	 * @return ResultPojo 所有视频监控点位信息
	 */
	public ResultPojo getVideoSiteInfo();
	
	/**
	 * 分页返回所有视频监控点位信息
	 * @param page 分页对象
	 * @return ResultPojo 包含视频监控点位信息的分页对象
	 */
	public ResultPojo getPageVideoSiteInfo(Page page);
	
	/**
	 * 按点位编码、点位名称或区域编码分页返回指定的视频监控点位信息
	 * @param vdSiteId 视频监控点位编码
	 * @param vdSiteName 视频监控点位名称
	 * @param regionId 区域编码
	 * @param page 分页对象
	 * @return 包含视频监控点位信息的分页对象
	 */
	public ResultPojo getPageVideoSiteInfoByIdNameRegion(String vdSiteId, String vdSiteName, String regionId, Page page);
	
	/**
	 * 返回指定编码的视频监控点位信息
	 * @param vdSiteId 视频监控点位编码
	 * @return ResultPojo 视频监控点位信息
	 */
	public ResultPojo getVideoSiteInfoById(String vdSiteId);
	
	/**
	 * 按名称匹配并返回视频监控点位信息
	 * @param vdSiteName 视频监控点位名称
	 * @return ResultPojo 视频监控点位信息
	 */
	public ResultPojo getVideoSiteInfoByName(String vdSiteName);
	
	/**
	 * 按是否高空视频点位返回视频监控点位信息
	 * @param isHigh 是否高空视频点位
	 * @return ResultPojo 视频监控点位信息
	 */
	public ResultPojo getVideoSiteInfoByHigh(String isHigh);
	
	/**
	 * 返回与前缀相匹配的视频监控点位最大编码值，用于手工生成新的编码
	 * @param prefixVdSiteId 视频监控点位编码前缀
	 * @return String 与前缀相匹配的视频监控点位最大编码值
	 */
	public String getMaxVdSiteId(String prefixVdSiteId);
	
	/**
	 * 添加一条视频监控点位信息
	 * @param token 外部传入信息
	 * @param videoSiteInfoDto 视频监控点位信息
	 * @return ResultPojo 添加结果
	 */
	public ResultPojo addVideoSiteInfo(String token, VideoSiteInfoDto videoSiteInfoDto);
	
	/**
	 * 修改一条视频监控点位信息
	 * @param token 外部传入信息
	 * @param videoSiteInfoDto 视频监控点位信息
	 * @return ResultPojo 修改结果
	 */
	public ResultPojo editVideoSiteInfo(String token, VideoSiteInfoDto videoSiteInfoDto);
	
	/**
	 * 删除指定编码的视频监控点位信息
	 * @param token 外部传入信息
	 * @param vdSiteId 视频监控点位编码
	 * @return ResultPojo 删除结果
	 */
	public ResultPojo removeVideoSiteInfo(String token, String vdSiteId);
	
	/**
	 * 按点位编码、点位名称或区域编码分页返回指定的视频监控点位信息
	 * @param vdSiteId 视频监控点位编码
	 * @param vdSiteName 视频监控点位名称
	 * @param deviceStatusCode 
	 * @param regionId 区域编码
	 * @param letterAbbr 
	 * @param manageId 
	 * @param manageDeptId 
	 * @param isHighCode 是否高空视频点位
	 * @param devTypeCode 
	 * @param orderSeq 
	 * @return ResultPojo 所有视频监控点位信息
	 */
	public ResultPojo getVideoSiteInfo(String vdSiteId, String vdSiteName, String deviceStatusCode, String regionId,
			String letterAbbr, String manageId, String manageDeptId, String isHighCode, String devTypeCode,
			String orderSeq);
	/**
	 * 按点位编码、点位名称或区域编码分页返回指定的视频监控点位信息
	 * @param vdSiteId 视频监控点位编码
	 * @param vdSiteName 视频监控点位名称
	 * @param deviceStatusCode 
	 * @param regionId 区域编码
	 * @param letterAbbr 
	 * @param manageId 
	 * @param manageDeptId 
	 * @param isHighCode 是否高空视频点位
	 * @param devTypeCode 
	 * @param orderSeq 
	 * @param page 分页对象
	 * @return 包含视频监控点位信息的分页对象
	 */
	public ResultPojo getPageVideoSiteInfo(String vdSiteId, String vdSiteName, String deviceStatusCode, String regionId,
			String letterAbbr, String manageId, String manageDeptId, String isHighCode, String devTypeCode,
			String orderSeq, Page page);


}
